package cn.tedu.lucky.draw.server.protocol.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "draw_activity")
public class Activity {
    /**
     * @Id 用于指定实体类中的某个字段作为数据库表的主键列
     * 这个注解是 JPA 中的核心概念之一，因为每个实体都必须有一个唯一标识符（即主键）
     * 以便 JPA 提供者能够在数据库中准确追踪和管理每个记录
     *
     * @Id 注解还可以和其他注解一起使用以提供更多的映射信息，例如 @GeneratedValue 注解
     * 该注解可以用来指定主键生成策略，例如使用数据库自身的序列、自动增长特性
     * 这里的策略是 GenerationType.IDENTITY，意味着数据库会在新记录插入时自动为 id 字段赋予唯一值。
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String description;
    private String img;
    /**
     * @Column: 定义实体类属性到数据库表列的映射
     * 不显式地使用 @Column 注解在实体类的字段上
     * JPA 默认还是能够将实体类的属性映射到数据库表的列上
     */
    @Column(name = "start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    private Integer status;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    private Integer sort;
}
